/**
 * @copyright Copyright (c) 2025 
 * CSG Digital Grid Technology (Guangdong) Co., Ltd.
 * @author klg
 * @brief SQLite API封装头文件，提供数据库操作的封装接口
 */
#ifndef __SQLITE_API_H__
#define __SQLITE_API_H__

#include "sqlite3.h"


#ifdef __cplusplus
extern "C" {
#endif


#if 0
#define SQLITE_PRINTF(...)  printf(__VA_ARGS__)
#else
#define SQLITE_PRINTF(...)
#endif


#define DBBUSY_TIMEOUT (1100)

/*****************************************************************************
 函 数 名  : api_open_sqlite
 功能描述  : 打开数据库
 输入参数  : const char *DbFile
             sqlite3 **db
 输出参数  : 无
 返 回 值  :
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2019年12月10日
    作    者   :
    修改内容   : 新生成函数

*****************************************************************************/
int api_open_sqlite(sqlite3 **db, const char *db_filename);

/*****************************************************************************
 函 数 名  : api_close_sqlite
 功能描述  : 关闭数据库
 输入参数  : sqlite3 *db
 输出参数  : 无
 返 回 值  :
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2019年12月10日
    作    者   :
    修改内容   : 新生成函数

*****************************************************************************/
int api_close_sqlite(sqlite3 *db);

int api_begin_sqlite(sqlite3 *db);
int api_commit_sqlite(sqlite3 *db);
int api_vacuum_sqlite(sqlite3 *db);

/*****************************************************************************
 函 数 名  : api_create_sqlite_table
 功能描述  : 创建数据库表
 输入参数  : sqlite3 *db
             const char* sql
 输出参数  : 无
 返 回 值  :
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2019年12月10日
    作    者   :
    修改内容   : 新生成函数

*****************************************************************************/
int api_create_sqlite_table(sqlite3 *db, const char* sql);

/*****************************************************************************
 函 数 名  : api_insert_sqlite
 功能描述  : 往数据中插入内容
 输入参数  : sqlite3 *db
             const char* sql
 输出参数  : 无
 返 回 值  :
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2019年12月10日
    作    者   :
    修改内容   : 新生成函数

*****************************************************************************/
int api_insert_sqlite(sqlite3 *db, const char* sql);


/*****************************************************************************
 函 数 名  : api_select_sqlite
 功能描述  : 查询数据库
 输入参数  : sqlite3 *db
             const char* sql
             sqlite3_callback cb_fun
             void *data
 输出参数  : 无
 返 回 值  :
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2019年12月11日
    作    者   :
    修改内容   : 新生成函数

*****************************************************************************/
int api_select_sqlite(sqlite3 *db, const char* sql, sqlite3_callback cb_fun, void *data);

/*****************************************************************************
 函 数 名  : api_delete_sqlite
 功能描述  : 删除数据库内容
 输入参数  : sqlite3 *db
             const char* sql
 输出参数  : 无
 返 回 值  :
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2019年12月10日
    作    者   :
    修改内容   : 新生成函数

*****************************************************************************/
int api_delete_sqlite(sqlite3 *db, const char* sql);

/*****************************************************************************
 函 数 名  : api_update_sqlite
 功能描述  : 更新数据库内容
 输入参数  : sqlite3 *db
             const char* sql
 输出参数  : 无
 返 回 值  :
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2019年12月10日
    作    者   :
    修改内容   : 新生成函数

*****************************************************************************/
int api_update_sqlite(sqlite3 *db, const char* sql);

int api_set_temp_store_directory(sqlite3 *db);

#ifdef __cplusplus
}
#endif

#endif //__SQLITE_API_H__
